#ifndef SRTREE_H
#define SRTREE_H

#include "utils.hpp"
#include "Rtree.hpp"
#include "basic.h"

#define MAX_ENTRADAS 3

class SphereBoundingBox {
    public:
        SphereBoundingBox();
        ~SphereBoundingBox();
};

class EntradaInternaRSTree: public EntradaInterna{
    public:
        SphereBoundingBox *sbb;
        EntradaInternaRSTree(No*filho);
		~EntradaInternaRSTree();
};


class SRTree{
    private:
    bool eRaiz;
    bool eFolha;
    BoundingBox *bb;
    int menorIncSobreposicao(
            Ponto *ponto ///@in ponto que será inserido
                            );///@out indice da entrada
    int menorIncArea(
            Ponto *ponto ///@in ponto que será inserido
                    );    ///@out indice da entrada

    SRTree* escolherSubarvore(Ponto *ponto);
    SRTree* insere(SRTree* no, Ponto *p);

    public:
        Entrada* entradas[MAX_ENTRADAS];
        int indiceEntrada;///indice da proxima entrada livre
        void insere(Ponto* p, int tipo);
        SRTree(bool eRaiz, bool eFolha);
        ~SRTree();
};

#endif // SRTREE_H

